<?php

namespace App\Admin;

use Illuminate\Database\Eloquent\Model;

class Auth extends Model
{
    protected $table = 'auth';
    public $timestamps = false;
    // protected $fillable = ['age'];//可以被批量赋值的属性 
    // protected $guarded = ['id','price'];//不能被批量赋值的属性

    public function saveData($data)
    {
        //  当前方法的战略： 根据已有信息生成一个新记录(字段内容不全面)
        //                  通过算法计算 path 和 level
        //                  再通过一个update语句把 path 和 level 给更新到新记录里边
        //                  此时字段内容完整
        //1) 根据已有$data(auth_name/pid )数据生成一条新记录出来
        $newId = $this->insertGetId($data);
        //2) 制作 path
        if ($data['pid'] == 0) {
            //  ① 顶级权限  path=====新记录主键id值
            $path = $newId;
        } else {
            //  ② 非顶级权限  根据pid获得父级权限信息，进而获得其“全路径”
            //     父级全路径-新记录主键id值
            $pinfo = $this->find($data['pid']);
            $path = $pinfo->path . "-" . $newId;
        }
        //3) 制作 level
        //   全路径里边"-"数量就是 level的值
        //   substr_count()计算一个字符串中出现的目标内容次数
        $level = substr_count($path, '-');

        $newData['path'] = $path;
        $newData['level'] = $level;

        //update 返回受影响的行数
        return $this->where('id', $newId)->update($newData);
    }

    public function updateData($data)
    {
        //表单提交的数据 ['id', 'auth_name', 'pid']
        //1) 正在修改的记录 ID
        $Id = $data['id'];
        //2) 制作 path
        if ($data['pid'] == 0) {
            //  ① 顶级权限  path=====新记录主键id值
            $path = $Id;
        } else {
            //  ② 非顶级权限  根据pid获得父级权限信息，进而获得其“全路径”
            //     父级全路径-新记录主键id值
            $pinfo = $this->find($data['pid']);
            $path = $pinfo->path . "-" . $Id;
        }
        //3) 制作 level
        //   全路径里边"-"数量就是 level的值
        //   substr_count()计算一个字符串中出现的目标内容次数
        $level = substr_count($path, '-');

        $newData['path'] = $path;
        $newData['level'] = $level;
        $newData['auth_name'] = $data['auth_name'];
        $newData['sort'] = $data['sort'];
        $newData['pid'] = $data['pid'];

        //update 返回受影响的行数
        return $this->where('id', $Id)->update($newData);
    }
}
